
package org.example.api.beans;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;


/**
 * The complete metadata for a template as a JSON document
 * 
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "keywords",
    "description",
    "metadataAuthor",
    "templateAuthor",
    "datePublished",
    "name",
    "templateId",
    "id",
    "isPublic"
})
public class TemplateMetadata {

    /**
     * Keywords that apply to the template
     * (Required)
     * 
     */
    @JsonProperty("keywords")
    @JsonPropertyDescription("Keywords that apply to the template")
    private Keywords keywords;
    /**
     * Free text description of the template
     * 
     */
    @JsonProperty("description")
    @JsonPropertyDescription("Free text description of the template")
    private String description;
    /**
     * The author of the metadata 
     * (Required)
     * 
     */
    @JsonProperty("metadataAuthor")
    @JsonPropertyDescription("The author of the metadata ")
    private org.example.api.beans.Author metadataAuthor;
    /**
     * The author of the metadata 
     * 
     */
    @JsonProperty("templateAuthor")
    @JsonPropertyDescription("The author of the metadata ")
    private org.example.api.beans.Author templateAuthor;
    /**
     * The date the metadata was published. By default this will be autogenerated to be the date the metadata was submitted to the API but you can also provide a date if desired
     * (Required)
     * 
     */
    @JsonProperty("datePublished")
    @JsonPropertyDescription("The date the metadata was published. By default this will be autogenerated to be the date the metadata was submitted to the API but you can also provide a date if desired")
    private String datePublished;
    /**
     * the name for the template
     * 
     */
    @JsonProperty("name")
    @JsonPropertyDescription("the name for the template")
    private String name;
    /**
     * ID for the template
     * 
     */
    @JsonProperty("templateId")
    @JsonPropertyDescription("ID for the template")
    private String templateId;
    /**
     * id for the metadata record. This will be autogenerated
     * (Required)
     * 
     */
    @JsonProperty("id")
    @JsonPropertyDescription("id for the metadata record. This will be autogenerated")
    private String id;
    /**
     * Is this metadata public. By default this will be autogenerated to true
     * (Required)
     * 
     */
    @JsonProperty("isPublic")
    @JsonPropertyDescription("Is this metadata public. By default this will be autogenerated to true")
    private Boolean isPublic;

    /**
     * Keywords that apply to the template
     * (Required)
     * 
     */
    @JsonProperty("keywords")
    public Keywords getKeywords() {
        return keywords;
    }

    /**
     * Keywords that apply to the template
     * (Required)
     * 
     */
    @JsonProperty("keywords")
    public void setKeywords(Keywords keywords) {
        this.keywords = keywords;
    }

    /**
     * Free text description of the template
     * 
     */
    @JsonProperty("description")
    public String getDescription() {
        return description;
    }

    /**
     * Free text description of the template
     * 
     */
    @JsonProperty("description")
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * The author of the metadata 
     * (Required)
     * 
     */
    @JsonProperty("metadataAuthor")
    public org.example.api.beans.Author getMetadataAuthor() {
        return metadataAuthor;
    }

    /**
     * The author of the metadata 
     * (Required)
     * 
     */
    @JsonProperty("metadataAuthor")
    public void setMetadataAuthor(org.example.api.beans.Author metadataAuthor) {
        this.metadataAuthor = metadataAuthor;
    }

    /**
     * The author of the metadata 
     * 
     */
    @JsonProperty("templateAuthor")
    public org.example.api.beans.Author getTemplateAuthor() {
        return templateAuthor;
    }

    /**
     * The author of the metadata 
     * 
     */
    @JsonProperty("templateAuthor")
    public void setTemplateAuthor(org.example.api.beans.Author templateAuthor) {
        this.templateAuthor = templateAuthor;
    }

    /**
     * The date the metadata was published. By default this will be autogenerated to be the date the metadata was submitted to the API but you can also provide a date if desired
     * (Required)
     * 
     */
    @JsonProperty("datePublished")
    public String getDatePublished() {
        return datePublished;
    }

    /**
     * The date the metadata was published. By default this will be autogenerated to be the date the metadata was submitted to the API but you can also provide a date if desired
     * (Required)
     * 
     */
    @JsonProperty("datePublished")
    public void setDatePublished(String datePublished) {
        this.datePublished = datePublished;
    }

    /**
     * the name for the template
     * 
     */
    @JsonProperty("name")
    public String getName() {
        return name;
    }

    /**
     * the name for the template
     * 
     */
    @JsonProperty("name")
    public void setName(String name) {
        this.name = name;
    }

    /**
     * ID for the template
     * 
     */
    @JsonProperty("templateId")
    public String getTemplateId() {
        return templateId;
    }

    /**
     * ID for the template
     * 
     */
    @JsonProperty("templateId")
    public void setTemplateId(String templateId) {
        this.templateId = templateId;
    }

    /**
     * id for the metadata record. This will be autogenerated
     * (Required)
     * 
     */
    @JsonProperty("id")
    public String getId() {
        return id;
    }

    /**
     * id for the metadata record. This will be autogenerated
     * (Required)
     * 
     */
    @JsonProperty("id")
    public void setId(String id) {
        this.id = id;
    }

    /**
     * Is this metadata public. By default this will be autogenerated to true
     * (Required)
     * 
     */
    @JsonProperty("isPublic")
    public Boolean getIsPublic() {
        return isPublic;
    }

    /**
     * Is this metadata public. By default this will be autogenerated to true
     * (Required)
     * 
     */
    @JsonProperty("isPublic")
    public void setIsPublic(Boolean isPublic) {
        this.isPublic = isPublic;
    }

}
